/**
 * 
 */
package pagecode.pages.mantenimiento;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlGraphicImage;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlMessages;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGroup;
import javax.faces.component.html.HtmlSelectBooleanCheckbox;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;

import model.mantenimiento.ConfiguracionMultitablaModel;

import org.ajax4jsf.ajax.html.AjaxPoll;
import org.apache.log4j.Logger;

import pagecode.PageCodeBase;

//import com.ibm.faces.component.html.HtmlCommandButton;
//import com.ibm.faces.component.html.HtmlGraphicImage;
//import com.ibm.faces.component.html.HtmlScriptCollector;
import com.stefanini.pe.bbva.mbl.carga.in.to.Corporativa;
import com.stefanini.pe.bbva.mbl.carga.in.to.CorporativaKey;
import com.stefanini.pe.bbva.mbl.carga.in.to.EstadoFormulario;
import com.stefanini.pe.bbva.mbl.in.utils.Constantes;
import com.stefanini.pe.framework.common.StringUtil;

public class ConfiguracionMultitablaDetalleBean extends PageCodeBase {

	private static Logger logger = Logger.getLogger(ConfiguracionMultitablaDetalleBean.class);
	
	protected ConfiguracionMultitablaModel configuracionMultitablaModel;
	
	//protected HtmlScriptCollector scriptCollector1;
	protected HtmlForm form1;
	protected HtmlGraphicImage image2;
	protected HtmlOutputText lblUsuario1;
	protected HtmlOutputText lblUsuario;
	protected HtmlOutputText lblFechaPrincipal;
	protected HtmlCommandLink lnkCerrarSession;
	protected HtmlOutputText lblCerrarSesion;
	protected HtmlCommandLink lnkRegresar;
	protected HtmlOutputText txthplRegresar;
	//protected HtmlScriptCollector scriptCollector3;
	protected HtmlOutputText lblTitulo;
	//protected HtmlScriptCollector scriptCollector2;
	protected HtmlOutputText lblIdProdFamDet;
	protected HtmlCommandLink lnkInicio;

	protected HtmlOutputText txthplInicio;

	protected AjaxPoll pollFecha;

	protected HtmlOutputText lblFechaPrincipal_;

	protected AjaxPoll poll;

	protected HtmlOutputText estadoReproceso;

	protected HtmlPanelGroup getFechaActual;

	protected HtmlPanelGroup grid;

	protected HtmlGraphicImage imageColor;

	protected HtmlSelectOneMenu cbxTabla;

	protected HtmlOutputText lblTab;

	protected HtmlOutputText lblDescCorta;

	protected HtmlInputText txtDescCorta;

	protected HtmlOutputText lblDescLarga;

	protected HtmlInputText txtDescLarga;

	protected HtmlOutputText lblDato1;

	protected HtmlInputText txtDato1;

	protected HtmlSelectBooleanCheckbox chEncripta;

	protected HtmlOutputText lblDato2;

	protected HtmlInputText txtDato2;

	protected HtmlOutputText lblDato3;

	protected HtmlInputText txtDato3;

	protected HtmlOutputText lblDato4;

	protected HtmlInputText txtDato4;

	protected HtmlOutputText lblDato5;

	protected HtmlInputText txtDato5;

	protected HtmlCommandButton btnGuardar;

	protected HtmlCommandButton btnCancelar;

	protected HtmlMessages errmessages1;

	protected HtmlOutputText lblNota;
	
	private String iniciar;
	
	public String getIniciar() {
		//logger.info("Inicio asdasdas");
		onPageLoadEnd(FacesContext.getCurrentInstance());
		return iniciar;
	}
	
	public void setIniciar(String iniciar) {
		this.iniciar = iniciar;
	}

	private boolean isPostBack() {
		logger.info("Inicio");
		
        if (this.getFacesContext().getExternalContext()
                .getRequestParameterMap().get("isPostBackProdFamDet") == null) {
        	
        	logger.info("Fin");
        	
            return false;
        } else {
        	logger.info("Fin");
        	
            return true;
        }
    }
    
	public void onPageLoadEnd(FacesContext facescontext) {
		logger.info("Inicio");
		
        if (!this.isPostBack()) {
            this.getConfiguracionMultitablaModel().setStrError(StringUtil.Empty);
        }
        
        logger.info("Fin");
    }
	
	public String grabar() {
		String directorioAnterior = null; 
		
		try {
			logger.info("Inicio");
	
			if (this.getConfiguracionMultitablaModel().getEstadoFormulario().getEstadoActual() == EstadoFormulario.NUEVO) {
				Corporativa corporativa = new Corporativa();
				corporativa.setCodTab(this.getConfiguracionMultitablaModel().getStrCodTabla());
				List elem = this.getConfiguracionMultitablaModel().getCorporativaService().selectMaxElemByTab(corporativa);
				if (elem.size() > 0) {
					corporativa = (Corporativa) elem.get(0);					
					
					if(!validar(this.getConfiguracionMultitablaModel().getCorporativa(), this.getConfiguracionMultitablaModel().getStrCodTabla())) {
		            	logger.info("Fin");
		            	
		            	return "";
		            }					
					
					this.getConfiguracionMultitablaModel().getCorporativa().setCodTab(this.getConfiguracionMultitablaModel().getStrCodTabla());
					this.getConfiguracionMultitablaModel().getCorporativa().setCodEle(corporativa.getCodEle());
					this.getConfiguracionMultitablaModel().getCorporativa().encriptar();
					
					this.getConfiguracionMultitablaModel().getCorporativa().setLitCor(
							this.getConfiguracionMultitablaModel().getCorporativa().getLitCor().trim().toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setLitLar(
							this.getConfiguracionMultitablaModel().getCorporativa().getLitLar().trim().toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setDato1(
							this.getConfiguracionMultitablaModel().getCorporativa().getDato1().trim()//.toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setDato2(
							this.getConfiguracionMultitablaModel().getCorporativa().getDato2().trim().toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setDato3(
							this.getConfiguracionMultitablaModel().getCorporativa().getDato3().trim().toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setDato4(
							this.getConfiguracionMultitablaModel().getCorporativa().getDato4().trim().toUpperCase()
					);
					this.getConfiguracionMultitablaModel().getCorporativa().setDato5(
							this.getConfiguracionMultitablaModel().getCorporativa().getDato5().trim().toUpperCase()
					);					
					
					this.getConfiguracionMultitablaModel().getCorporativaService().insert(this.getConfiguracionMultitablaModel().getCorporativa());
					this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.GUARDAR);
				}
			} else if (this.getConfiguracionMultitablaModel().getEstadoFormulario().getEstadoActual() == EstadoFormulario.ABRIR) {
				Corporativa corporativa = this.getConfiguracionMultitablaModel().getCorporativa();
				
				if(!validar(this.getConfiguracionMultitablaModel().getCorporativa(), this.getConfiguracionMultitablaModel().getStrCodTabla())) {
	            	logger.info("Fin");
	            	
	            	return "";
	            }
				
				
				corporativa.encriptar();
				
				this.getConfiguracionMultitablaModel().getCorporativa().setLitCor(
						this.getConfiguracionMultitablaModel().getCorporativa().getLitCor().trim().toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setLitLar(
						this.getConfiguracionMultitablaModel().getCorporativa().getLitLar().trim().toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setDato1(
						this.getConfiguracionMultitablaModel().getCorporativa().getDato1().trim()//.toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setDato2(
						this.getConfiguracionMultitablaModel().getCorporativa().getDato2().trim().toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setDato3(
						this.getConfiguracionMultitablaModel().getCorporativa().getDato3().trim().toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setDato4(
						this.getConfiguracionMultitablaModel().getCorporativa().getDato4().trim().toUpperCase()
				);
				this.getConfiguracionMultitablaModel().getCorporativa().setDato5(
						this.getConfiguracionMultitablaModel().getCorporativa().getDato5().trim().toUpperCase()
				);
				
				if(corporativa.getCodTab() != null && corporativa.getCodTab().equals("T11")) {
					CorporativaKey key = new CorporativaKey();
					
					key.setCodEle(corporativa.getCodEle());
					key.setCodTab(corporativa.getCodTab());
					
					Corporativa cor = this.getConfiguracionMultitablaModel().getCorporativaService().selectByPrimaryKey(key);
					directorioAnterior = cor.getLitLar();
				}
				
				this.getConfiguracionMultitablaModel().getCorporativaService().updateByPrimaryKey(corporativa);
				
				if(corporativa.getCodTab() != null && corporativa.getCodTab().equals("T11")) {
					this.getConfiguracionMultitablaModel().getCorporativaService().actualizarNombreDirectorio(
							directorioAnterior, corporativa.getLitLar());
				}
				
				this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.GUARDAR);
				
				/*
				if(corporativa.getCodTab() != null && corporativa.getCodTab().equals("T12")) {
					if(corporativa.getCodEle() != null && corporativa.getCodEle().equals("1")) {
						this.getConfiguracionMultitablaModel().getCargaArchivoService().actualizarHoraQuartz(
								Constantes.ID_ARCHIVO_COBRANZA, corporativa.getDato1());
					}
				}
				
				//Agregando metodo para actualizar hora de generacion de archivos de pagos de contratos de tipo RE
				
				if(corporativa.getCodTab() != null && corporativa.getCodTab().equals("T12")) {
					if(corporativa.getCodEle() != null && corporativa.getCodEle().equals("2")) {
						this.getConfiguracionMultitablaModel().getCargaArchivoService().actualizarHoraQuartz(
								Constantes.ID_ARCHIVO_PAGOS_CONTRATO_RE, corporativa.getDato1());
					}
				}
				*/
				if(corporativa.getCodTab() != null && corporativa.getCodTab().equals("T12")) {
					if(corporativa.getCodEle() != null && corporativa.getCodEle().equals("1")) {
						
					}
				}
			} else {
				logger.error("Estado de formulario inconsistente.");
				addMessagesError(Constantes.MSJ_ERROR_INESPERADO);
			}
			
			/* Inicio: lpolanco	-	28/05/2012	*/
			this.configuracionMultitablaModel.setBReloadConfiguracion(true);
			/* Fin: lpolanco	-	28/05/2012	*/
			
			logger.info("Fin");
			
			return "grabar";
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
			addMessagesError(Constantes.MSJ_ERROR_INESPERADO);
			return null;
		}
	}
	
	 private boolean validar(Corporativa corporativa, String strCodTabla) {
	    	boolean resp = true;
	    	String codTabla = null;
	    	String descCorta = null;
	    	String descLarga = null;
	    	String dato1 = null;
	    	String dato2 = null;
	    	String dato3 = null;
	    	String dato4 = null;
	    	String dato5 = null;
	    	
	    	// Codigo de la tabla
	    	codTabla = strCodTabla;
	    	
	    	if(codTabla != null) {
	    		if(codTabla.equals("")) {
	    			resp = false;    		
	        		addMessagesError("* Ingrese el campo Tabla");
	    		}	    		
	    	} else {
	    		resp = false;
	    		addMessagesError("* Ingrese el campo Tabla");
	    	}
	    	
	    	// Descripcion larga
	    	descLarga = corporativa.getLitLar();
	    	if(descLarga != null) {
	    		if(descLarga.trim().equals("")) {
	    			resp = false;    		
	        		addMessagesError("* Ingrese el campo Descripcion Larga");
	    		}	    		
	    	} else {
	    		resp = false;
	    		addMessagesError("* Ingrese el campo Descripcion Larga");
	    	}
	    	
	    	/*// Dato1
	    	dato1 = corporativa.getDato1();
	    	if(dato1 != null) {
	    		if(dato1.trim().equals("")) {
	    			resp = false;    		
	        		addMessagesError("* Ingrese el campo Dato1");
	    		}	    		
	    	} else {
	    		resp = false;
	    		addMessagesError("* Ingrese el campo Dato1");
	    	}*/
	    	
	    	return resp;
	}
	
	public String cancelar() {
		try {
			logger.info("Inicio");
			
			this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.BUSCAR);
			
			Corporativa corporativa = new Corporativa();
			corporativa.setCodTab(this.getConfiguracionMultitablaModel().getStrCodTabla());
			ArrayList lstElementos = (ArrayList) this.getConfiguracionMultitablaModel().getCorporativaService().selectByTab(corporativa);
			
			this.getConfiguracionMultitablaModel().setLstElementos(lstElementos);
			
			logger.info("Fin");
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
		
		/* Inicio: lpolanco	-	28/05/2012	*/
		this.configuracionMultitablaModel.setBReloadConfiguracion(true);
		/* Final: lpolanco	-	28/05/2012	*/
		
		return "cancelar";
	}
	
	/*protected HtmlScriptCollector getScriptCollector1() {
		if (scriptCollector1 == null) {
			scriptCollector1 = (HtmlScriptCollector) findComponentInRoot("scriptCollector1");
		}
		return scriptCollector1;
	}*/

	protected HtmlForm getForm1() {
		if (form1 == null) {
			form1 = (HtmlForm) findComponentInRoot("form1");
		}
		return form1;
	}

	protected HtmlGraphicImage getImage2() {
		if (image2 == null) {
			image2 = (HtmlGraphicImage) findComponentInRoot("image2");
		}
		return image2;
	}

	protected HtmlOutputText getLblUsuario1() {
		if (lblUsuario1 == null) {
			lblUsuario1 = (HtmlOutputText) findComponentInRoot("lblUsuario1");
		}
		return lblUsuario1;
	}

	protected HtmlOutputText getLblUsuario() {
		if (lblUsuario == null) {
			lblUsuario = (HtmlOutputText) findComponentInRoot("lblUsuario");
		}
		return lblUsuario;
	}

	protected HtmlOutputText getLblFechaPrincipal() {
		if (lblFechaPrincipal == null) {
			lblFechaPrincipal = (HtmlOutputText) findComponentInRoot("lblFechaPrincipal");
		}
		return lblFechaPrincipal;
	}

	protected HtmlCommandLink getLnkCerrarSession() {
		if (lnkCerrarSession == null) {
			lnkCerrarSession = (HtmlCommandLink) findComponentInRoot("lnkCerrarSession");
		}
		return lnkCerrarSession;
	}

	protected HtmlOutputText getLblCerrarSesion() {
		if (lblCerrarSesion == null) {
			lblCerrarSesion = (HtmlOutputText) findComponentInRoot("lblCerrarSesion");
		}
		return lblCerrarSesion;
	}

	protected HtmlCommandLink getLnkRegresar() {
		if (lnkRegresar == null) {
			lnkRegresar = (HtmlCommandLink) findComponentInRoot("lnkRegresar");
		}
		return lnkRegresar;
	}

	protected HtmlOutputText getTxthplRegresar() {
		if (txthplRegresar == null) {
			txthplRegresar = (HtmlOutputText) findComponentInRoot("txthplRegresar");
		}
		return txthplRegresar;
	}

	/*protected HtmlScriptCollector getScriptCollector3() {
		if (scriptCollector3 == null) {
			scriptCollector3 = (HtmlScriptCollector) findComponentInRoot("scriptCollector3");
		}
		return scriptCollector3;
	}*/

	protected HtmlOutputText getLblTitulo() {
		if (lblTitulo == null) {
			lblTitulo = (HtmlOutputText) findComponentInRoot("lblTitulo");
		}
		return lblTitulo;
	}

	/*protected HtmlScriptCollector getScriptCollector2() {
		if (scriptCollector2 == null) {
			scriptCollector2 = (HtmlScriptCollector) findComponentInRoot("scriptCollector2");
		}
		return scriptCollector2;
	}
*/
	protected HtmlOutputText getLblIdProdFamDet() {
		if (lblIdProdFamDet == null) {
			lblIdProdFamDet = (HtmlOutputText) findComponentInRoot("lblIdProdFamDet");
		}
		return lblIdProdFamDet;
	}

	/** 
	 * @managed-bean true
	 */
	public ConfiguracionMultitablaModel getConfiguracionMultitablaModel() {
		if (configuracionMultitablaModel == null) {
			configuracionMultitablaModel = (ConfiguracionMultitablaModel) getFacesContext()
					.getApplication().createValueBinding(
							"#{configuracionMultitablaModel}").getValue(
							getFacesContext());
		}
		return configuracionMultitablaModel;
	}

	/** 
	 * @managed-bean true
	 */
	public void setConfiguracionMultitablaModel(
			ConfiguracionMultitablaModel configuracionMultitablaModel) {
		this.configuracionMultitablaModel = configuracionMultitablaModel;
	}

	protected HtmlCommandLink getLnkInicio() {
		if (lnkInicio == null) {
			lnkInicio = (HtmlCommandLink) findComponentInRoot("lnkInicio");
		}
		return lnkInicio;
	}

	protected HtmlOutputText getTxthplInicio() {
		if (txthplInicio == null) {
			txthplInicio = (HtmlOutputText) findComponentInRoot("txthplInicio");
		}
		return txthplInicio;
	}

	protected AjaxPoll getPollFecha() {
		if (pollFecha == null) {
			pollFecha = (AjaxPoll) findComponentInRoot("pollFecha");
		}
		return pollFecha;
	}

	protected HtmlOutputText getLblFechaPrincipal_() {
		if (lblFechaPrincipal_ == null) {
			lblFechaPrincipal_ = (HtmlOutputText) findComponentInRoot("lblFechaPrincipal_");
		}
		return lblFechaPrincipal_;
	}

	protected AjaxPoll getPoll() {
		if (poll == null) {
			poll = (AjaxPoll) findComponentInRoot("poll");
		}
		return poll;
	}

	protected HtmlOutputText getEstadoReproceso() {
		if (estadoReproceso == null) {
			estadoReproceso = (HtmlOutputText) findComponentInRoot("estadoReproceso");
		}
		return estadoReproceso;
	}

	protected HtmlPanelGroup getGetFechaActual() {
		if (getFechaActual == null) {
			getFechaActual = (HtmlPanelGroup) findComponentInRoot("getFechaActual");
		}
		return getFechaActual;
	}

	protected HtmlPanelGroup getGrid() {
		if (grid == null) {
			grid = (HtmlPanelGroup) findComponentInRoot("grid");
		}
		return grid;
	}

	protected HtmlGraphicImage getImageColor() {
		if (imageColor == null) {
			imageColor = (HtmlGraphicImage) findComponentInRoot("imageColor");
		}
		return imageColor;
	}

	protected HtmlSelectOneMenu getCbxTabla() {
		if (cbxTabla == null) {
			cbxTabla = (HtmlSelectOneMenu) findComponentInRoot("cbxTabla");
		}
		return cbxTabla;
	}

	protected HtmlOutputText getLblTab() {
		if (lblTab == null) {
			lblTab = (HtmlOutputText) findComponentInRoot("lblTab");
		}
		return lblTab;
	}

	protected HtmlOutputText getLblDescCorta() {
		if (lblDescCorta == null) {
			lblDescCorta = (HtmlOutputText) findComponentInRoot("lblDescCorta");
		}
		return lblDescCorta;
	}

	protected HtmlInputText getTxtDescCorta() {
		if (txtDescCorta == null) {
			txtDescCorta = (HtmlInputText) findComponentInRoot("txtDescCorta");
		}
		return txtDescCorta;
	}

	protected HtmlOutputText getLblDescLarga() {
		if (lblDescLarga == null) {
			lblDescLarga = (HtmlOutputText) findComponentInRoot("lblDescLarga");
		}
		return lblDescLarga;
	}

	protected HtmlInputText getTxtDescLarga() {
		if (txtDescLarga == null) {
			txtDescLarga = (HtmlInputText) findComponentInRoot("txtDescLarga");
		}
		return txtDescLarga;
	}

	protected HtmlOutputText getLblDato1() {
		if (lblDato1 == null) {
			lblDato1 = (HtmlOutputText) findComponentInRoot("lblDato1");
		}
		return lblDato1;
	}

	protected HtmlInputText getTxtDato1() {
		if (txtDato1 == null) {
			txtDato1 = (HtmlInputText) findComponentInRoot("txtDato1");
		}
		return txtDato1;
	}

	protected HtmlSelectBooleanCheckbox getChEncripta() {
		if (chEncripta == null) {
			chEncripta = (HtmlSelectBooleanCheckbox) findComponentInRoot("chEncripta");
		}
		return chEncripta;
	}

	protected HtmlOutputText getLblDato2() {
		if (lblDato2 == null) {
			lblDato2 = (HtmlOutputText) findComponentInRoot("lblDato2");
		}
		return lblDato2;
	}

	protected HtmlInputText getTxtDato2() {
		if (txtDato2 == null) {
			txtDato2 = (HtmlInputText) findComponentInRoot("txtDato2");
		}
		return txtDato2;
	}

	protected HtmlOutputText getLblDato3() {
		if (lblDato3 == null) {
			lblDato3 = (HtmlOutputText) findComponentInRoot("lblDato3");
		}
		return lblDato3;
	}

	protected HtmlInputText getTxtDato3() {
		if (txtDato3 == null) {
			txtDato3 = (HtmlInputText) findComponentInRoot("txtDato3");
		}
		return txtDato3;
	}

	protected HtmlOutputText getLblDato4() {
		if (lblDato4 == null) {
			lblDato4 = (HtmlOutputText) findComponentInRoot("lblDato4");
		}
		return lblDato4;
	}

	protected HtmlInputText getTxtDato4() {
		if (txtDato4 == null) {
			txtDato4 = (HtmlInputText) findComponentInRoot("txtDato4");
		}
		return txtDato4;
	}

	protected HtmlOutputText getLblDato5() {
		if (lblDato5 == null) {
			lblDato5 = (HtmlOutputText) findComponentInRoot("lblDato5");
		}
		return lblDato5;
	}

	protected HtmlInputText getTxtDato5() {
		if (txtDato5 == null) {
			txtDato5 = (HtmlInputText) findComponentInRoot("txtDato5");
		}
		return txtDato5;
	}

	protected HtmlCommandButton getBtnGuardar() {
		if (btnGuardar == null) {
			btnGuardar = (HtmlCommandButton) findComponentInRoot("btnGuardar");
		}
		return btnGuardar;
	}

	protected HtmlCommandButton getBtnCancelar() {
		if (btnCancelar == null) {
			btnCancelar = (HtmlCommandButton) findComponentInRoot("btnCancelar");
		}
		return btnCancelar;
	}

	protected HtmlMessages getErrmessages1() {
		if (errmessages1 == null) {
			errmessages1 = (HtmlMessages) findComponentInRoot("errmessages1");
		}
		return errmessages1;
	}

	protected HtmlOutputText getLblNota() {
		if (lblNota == null) {
			lblNota = (HtmlOutputText) findComponentInRoot("lblNota");
		}
		return lblNota;
	}
}